package com.hsurosy.hsuchain.nft.user.infrastructure.exception;

import com.hsurosy.hsuchain.nft.base.exception.BizException;
import com.hsurosy.hsuchain.nft.base.exception.ErrorCode;

/**
 * 用户异常类
 *
 * @Author Hsu琛君珩
 * @Date 2024-10-05 18:12
 * @Description
 * @Version: v1.0.0
 */
public class UserException extends BizException {

    /**
     * 使用错误码构造用户异常
     *
     * @param errorCode 错误码
     */
    public UserException(ErrorCode errorCode) {
        super(errorCode);
    }

    /**
     * 使用自定义消息和错误码构造用户异常
     *
     * @param message 自定义异常消息
     * @param errorCode 错误码
     */
    public UserException(String message, ErrorCode errorCode) {
        super(message, errorCode);
    }

    /**
     * 使用自定义消息、异常原因和错误码构造用户异常
     *
     * @param message 自定义异常消息
     * @param cause 原始异常原因
     * @param errorCode 错误码
     */
    public UserException(String message, Throwable cause, ErrorCode errorCode) {
        super(message, cause, errorCode);
    }

    /**
     * 使用异常原因和错误码构造用户异常
     *
     * @param cause 原始异常原因
     * @param errorCode 错误码
     */
    public UserException(Throwable cause, ErrorCode errorCode) {
        super(cause, errorCode);
    }

    /**
     * 使用自定义消息、异常原因、错误码以及高级选项构造用户异常
     * <p>
     * enableSuppression 和 writableStackTrace 是高级选项，分别用于控制异常抑制和栈追踪的写入。
     * </p>
     *
     * @param message 自定义异常消息
     * @param cause 原始异常原因
     * @param enableSuppression 是否允许异常抑制
     * @param writableStackTrace 是否可写入堆栈追踪
     * @param errorCode 错误码
     */
    public UserException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace, ErrorCode errorCode) {
        super(message, cause, enableSuppression, writableStackTrace, errorCode);
    }
}
